package cn.afei.cloud.utils.result;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 返回结果的操作类
 */
public class ResultVOUtils implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 成功时返回
     * @param data 返回的data对象
     * @return {@link ResultVo}
     */
    public static ResultVo successCode200(Object data) {
        ResultVo<Object> resultVO = new ResultVo<Object>();
        resultVO.setCode(200);
        resultVO.setMessage("success");
        resultVO.setData(data);
        return resultVO;
    }
    public static ResultVo errorCode200(Object data) {
        ResultVo<Object> resultVO = new ResultVo<Object>();
        resultVO.setCode(200);
        resultVO.setMessage("error");
        resultVO.setData(data);
        return resultVO;
    }

    /**
     * 成功时返回
     * @param data 返回的data对象
     * @return {@link ResultVo}
     */
    public static ResultVo success(Object data) {
        ResultVo<Object> resultVO = new ResultVo<Object>();
        resultVO.setCode(0);
        resultVO.setMessage("success");
        resultVO.setData(data);
        return resultVO;
    }
   /**
     * 失败时返回
     * @param data 返回的data对象
     * @return {@link ResultVo}
     */
    public static ResultVo error(Integer code, Object data) {
        ResultVo<Object> resultVO = new ResultVo<Object>();
        resultVO.setCode(code);
        resultVO.setMessage(data.toString());
        resultVO.setData(null);
        return resultVO;
    }

    /**
     * 失败时返回
     * @param message
     * @return {@link ResultVo}
     */
    public static ResultVo errorMessage(Integer code, String message) {
        ResultVo<Object> resultVO = new ResultVo<Object>();
        resultVO.setCode(code);
        resultVO.setMessage(message);
        resultVO.setData(null);
        return resultVO;
    }

    /**
     * 失败时返回
     * @param message
     * @return {@link ResultVo}
     */
    public static ResultVo errorMessage( String message,Object data) {
        ResultVo<Object> resultVO = new ResultVo<Object>();
        resultVO.setCode(200);
        resultVO.setMessage(message);
        resultVO.setData(data);
        return resultVO;
    }

    /**
     * 成功时返回
     * @return {@link ResultVo}
     */
    public static ResultVo success() {
        Map data = new HashMap();
        return success(data);
    }

    /**
     * 错误时返回
     * @param code 错误码
     * @param message 错误信息
     * @return {@link ResultVo}
     */
//    public static ResultVo error(Integer code, String message) {
//        ResultVo<Object> resultVO = new ResultVo<>();
//        resultVO.setCode(code);
//        resultVO.setMessage(message);
//        Map data = new HashMap();
//        resultVO.setData(data);
//        return resultVO;
//    }
    public static ResultVo error(Integer code, String message, Object o) {
        ResultVo<Object> resultVO = new ResultVo<>();
        resultVO.setCode(code);
        resultVO.setMessage(message);
        Map data = new HashMap();
        resultVO.setData(o);
        return resultVO;
    }


    /**
     * 错误时返回
     * @param resultEnum 错误枚举类
     * @return {@link ResultVo}
     */
    public static ResultVo error(ResultEnum resultEnum) {
        return error(resultEnum.getCode(), resultEnum.getMessage());
    }

    /**
     * 错误时返回
     * @param resultEnum 错误枚举类
     * @param message 错误的信息
     * @return {@link ResultVo}
     */
    public static ResultVo error(ResultEnum resultEnum, String message) {
        return error(resultEnum.getCode(), message);
    }
    /**
     * 成功时返回
     * @param data 返回的data对象
     * @return {@link ResultVo}
     */
    public static ResultVo success(String message , Object data) {
        ResultVo<Object> resultVO = new ResultVo<Object>();
        resultVO.setCode(0);
        resultVO.setMessage(message);
        resultVO.setData(data);
        return resultVO;
    }
}
